As is known in the art, computer systems generally include a platform generally comprised of a certain hardware base, including a central processing unit and computer memory, an operating system, and application or utility software that runs on top of the operating system. Data storage systems typically include some elements of a computer system and data storage devices installed in an array fashion. Such data storage systems are useful if accessible by users and applications using other computer systems, but typically some software may be accessible to some users and not others depending on what level of software has been installed on their computer and/or the data storage system.
Software, and in particular that for Data Storage Systems, is often comprised of components that have multiple uses. Product features for use by the customer require one or more of these components. It would be advancement in the art to be able to sell software product features individually and without regard to what other components are also purchased. A customer probably would not want to buy extra components just to get a few select features. On the other hand, a software supplier may not want to imply free use of a feature just because some of the components required for that feature happen to be required for another product having similar components. Unfortunately, there is a shortcoming of prior art software design in that these problems are not well addressed or solved. Moreover, it is useful to minimize qualification, distribution, and maintenance costs for software by avoiding methods that release software components in many different combinations.